'use strict';
// Regex to split a windows path into into [dir, root, basename, name, ext]
// Split a filename into [dir, root, basename, name, ext], unix version
// 'root' is just a slash, or nothing.
var splitPathRe = /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/;
var posix = {};

function posixSplitPath(filename) {
    return splitPathRe.exec(filename).slice(1);
}

posix.parse = function (pathString) {
    if (typeof pathString !== 'string') {
        throw new TypeError("Parameter 'pathString' must be a string, not " + typeof pathString);
    }
    var allParts = posixSplitPath(pathString);
    if (!allParts || allParts.length !== 5) {
        throw new TypeError("Invalid path '" + pathString + "'");
    }

    return {
        root: allParts[1],
        dir: allParts[0].slice(0, -1),
        base: allParts[2],
        ext: allParts[4],
        name: allParts[3],
    };
};

export default posix.parse;
